Volumetric data and three-dimensional visualization of the volumetric data play an increasingly important role in a number of fields such as, for example, medicine, industrial quality assurance, engineering, and geology. In a scalar volumetric dataset, different grayscale values correspond to different structures of a represented object (e.g., different types of tissue within the body of a human). Discrete elements of the scalar volumetric dataset are voxels.
Direct volume rendering (DVR) displays a colored image of the different structures of the represented object by integrating interactions of light with imaginary gaseous materials represented within the scalar volumetric dataset along viewing rays. The light-material interactions are modeled by mapping different data values (e.g., grayscale values) to different opacities and colors. This mapping classifies the different objects represented within the scalar volumetric dataset.
DVR allows for a fast and efficient exploration of the different classified objects. During rendering, a transfer function or look-up table (LUT) defines a color and an opacity pair for each value in a data range. By setting an interval of data values to completely transparent, irrelevant structures (e.g., surrounding air) may be made invisible.
More advanced DVR techniques allow individual LUTs to be defined for different structures represented within the scalar volumetric dataset. A label volume may be used during rendering to provide an integer valued index for selecting the correct LUT.
DVR is a very expensive technique computationally. In order to provide interactive rendering speeds, efficient acceleration techniques may be used. Due to the high memory consumption for DVR, there is a tradeoff between acceleration and memory cost.
One acceleration technique is to skip empty (e.g., invisible) space of the scalar volumetric dataset. The scalar volumetric dataset is preprocessed to find empty regions, and this information is stored in dedicated data structures provided for fast lookup during rendering. Data structures and algorithms based on, for example, distance fields may be used. The distance to the nearest non-empty space is encoded for each voxel. Needed empty space information is calculated and stored in static data structures that are optimized for fast lookup. The static data structures may consume a large amount of memory, which may be scarce for volume rendering applications (e.g., due to graphics processing units (GPUs) being used).